# 全局变量
"""
全局变量：
    global关键字添加
    只有不可变的类型才需要添加global
         int float str bool ()
    可变的类型不需要添加global
        list dist set()  列表、字典、集合
局部变量：
    仅限于函数内部

可变和不可变：
    可变:
        list dist set()  列表、字典、集合
    不可变：
        当改变变量的值，地址发生改变，就认为此类型不可变：
        int float str bool ()
"""
# 　不可变　int float str bool ()
a = 1
print(id(a))
a = 2
print(id(a))
a = ''
print(id(a))
a = 'str'
print(id(a))
a = (1, 2, 3)
print(id(a))
a = (1, 2)
print(id(a))

# 　可变


a = [1, 2, 3]
print(id(a))
a.remove(3)
print(id(a))

print('局部变量和全局变量'.center(30, '-'))

x = 100


# 局部
def pr():
    x = 8
    y = 10
    print(x)
    print(y)


# 全局
def pr2():
    print(x)


# 修改全局
def pr3():
    global x  # 必须声明了才可以动
    x = x - 80  # 不能轻易动全局变量
    print(x)


pr()
pr2()
pr3()
pr2()
